package main

import (
	"fmt"
	"strings"
	"sync"

	"GoWebCmd/utils"
)

func main() {
	cmdStr := "ping -n 7 qq.com"
	args := strings.Split(cmdStr, " ")

	cmdOut := make(chan string)

	var wg sync.WaitGroup

	//协程处理cmd输出,并计数，用于等待完成
	wg.Add(1)
	go func() {
		defer wg.Done()

		//处理cmd输出通道的数据
		for cmdLine := range cmdOut {
			fmt.Println(cmdLine)
		}
		fmt.Println("cmd接收完成")
	}()

	//协程执行cmd,并计数，用于等待完成
	wg.Add(1)
	go func() {
		defer wg.Done()
		utils.ExecCommand(args[0], args[1:], cmdOut)
		fmt.Println("cmd执行完成")
		//必须关闭通道，否则range或者for-select不会停止，导致死锁
		close(cmdOut)
	}()

	//等待处理完成
	wg.Wait()
}
